package me.zhengjie.kwService;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import me.zhengjie.pojo.dto.ExamRommManualDto;
import me.zhengjie.pojo.dto.ExamRoomDto;
import me.zhengjie.pojo.dto.ExamRoomFindPageTearcherDto;
import me.zhengjie.pojo.dto.ExamRoomRandomDto;
import me.zhengjie.pojo.entity.ExamRoom;
import me.zhengjie.pojo.entity.ExamTeacher;
import me.zhengjie.pojo.vo.ExamRoomVo;
import me.zhengjie.util.BaseResponse;

import java.util.List;

/**
 * @author Long
 * @date 2021/6/28 14:02
 */
public interface ExamRoomService extends IService<ExamRoom> {
    /**
     * 查询考场信息及其对应的考试信息、教室信息
     *
     * @return 返回考场、考试、教室信息
     */
    ExamRoomVo findOneById(Integer id);

    /**
     * 查询所有考场
     *
     * @param pageNo   当前页码
     * @param pageSize 当前页条数
     * @return 分页返回所有考场信息
     */
    IPage<ExamRoom> findAllExamRoom(Integer pageNo, Integer pageSize);

    /**
     * 新增考场信息
     *
     * @param dto 考场信息
     */
    BaseResponse saveExamRoom(ExamRoomDto dto);

    /**
     * 给考场随机分配监考教师
     *
     * @param dto 分配人数、考试id
     */
    void random(ExamRoomRandomDto dto);

    /**
     * 查询出所有本场考试未被分配的监考教师
     *
     * @param dto 考试id
     * @return
     */
    IPage<ExamTeacher> findPage(ExamRoomFindPageTearcherDto dto);

    /**
     * 查询出在这个考试考场的监考教师
     *
     * @param examId     考试id
     * @param examRoomId 考场id
     */
    List<ExamTeacher> getExamTeachers(Integer examId, Integer examRoomId);

    /**
     * 手动给考场分配监考教师
     *
     * @param dto 监考教师信息id、考场id
     */
    void manual(ExamRommManualDto dto);
}
